﻿using System;
using System.Linq;
using System.Collections.Generic;
using PSE.Tools.Util.Entidades;


namespace PSE.Tools.CadastroMensagens.Negocio
{
    /// <summary>
    /// Classe que persiste as informações de Perfis
    /// </summary>
    public class Perfil
    {
        #region [ Variáveis ]

        AcessoDados.Perfil _perfisNegocio;

        #endregion [ Variáveis ]

        #region [ Contrutores ]

        public Perfil()
        {
            _perfisNegocio = new AcessoDados.Perfil();
        }

        #endregion [ Contrutores ]

        #region [ Métodos ]

        /// <summary>
        /// Insere um Perfil
        /// </summary>
        /// <param name="entidade">Resource a ser inserido</param>
        /// <exception cref="ArgumentNullException">Quando um Perfil está Nulo</exception>
        /// <exception cref="ValidacaoEntidadeException">Quando um Perfil está Inválido</exception>
        public void Inserir(Entidades.Perfil entidade)
        {
            if (entidade == null)
                throw new ArgumentNullException("entidade");

            if (!entidade.EntidadeValida)
                throw new ValidacaoEntidadeException(entidade.MensagensValidacoesEntidades());

            _perfisNegocio.Inserir(entidade);
        }

        /// <summary>
        /// Retorna Uma Lista de Perfis
        /// </summary>
        /// <returns></returns>
        public IList<Entidades.Perfil> Listar(int IdUsuario)
        {
            return _perfisNegocio.Listar(IdUsuario);
        }

        /// <summary>
        /// Retorna o Último Perfil Salvo pelo Usuário
        /// </summary>
        /// <param name="id">Id do Resource</param>
        /// <exception cref="ArgumentException">Quando o Id é inválido</exception>
        public Entidades.Perfil Selecionar(Entidades.Perfil entidade)
        {
            if (entidade.UsuarioPerfil <= 0)
                throw new ArgumentException("id");

            return _perfisNegocio.Selecionar(entidade);
        }

        #endregion
    }
}
